# -*- coding: utf-8 -*-
"""
-----------------------------------------------------------------
    File Name   : grabASeat.py
    Description : 主程序
    Author      : DuanGe
    Created On  : 2024/11/19
    Email       : duangeali@aliyun.com
    Version     : 1.0.0
    Copyright   : Copyright (c) 2024 DuanGe
    License     : Apache License 2.0
-----------------------------------------------------------------
"""
from common import common
from common.action import action_config
from core import handle
from utils import table_util

# 获取操作列表
action_list = action_config


# 回调函数
def action_code_callback(val: str):
    """
    操作处理程序

    :param val: 输入的操作码
    """
    # 查找对应的操作项
    action = next((item for item in action_config if item['code'] == val), None)
    if action is None:
        common.info_tip("操作码无效, 请重新输入")
        return False
    # 动态获取处理函数
    handler_name = action['handler']
    if handler_name == "quit":
        print("已经退出抢座系统...")
        return True
    try:
        # 使用 getattr 动态获取 handle 模块中的处理函数
        handler_func = getattr(handle, handler_name)
        handler_func()
        return False
    except AttributeError:
        common.error_tip(f"未找到处理函数 {handler_name}, 请检查配置")
        return False


# 前置函数
def show_action_table():
    """
    显示操作面板

    """
    table_util.list_table(
        list_data=action_list,
        table_headers=['操作码', '操作项'],
        columns=['code', 'name']
    )


if __name__ == '__main__':
    print("[ 欢迎使用grabASeat系统 ]")
    common.input_loop(
        prompt="请输入操作码: ",
        callback=action_code_callback,
        before=show_action_table
    )
